﻿<style>
    #tb-voos th
    {
        font-size: small;
        width: 100px;
    }
    #tb-voos 
    {
        font-size: small;
    }
</style>


<h1>Disponibilidade de voos</h1>
<br />

<label for="estadoOrigem">UF Origem:</label>
<select id="estadoOrigem">
    <option value="SP">SP</option>
    <option value="RJ">RJ</option>
</select>

<label for="cidadeOrigem">Origem:</label>
<select id="cidadeOrigem">
    @foreach (FlyShopWeb.Models.Cidade cidade in ViewBag.ListaCidades)
    {
        <option value="@cidade.Codigo">@cidade.Nome</option>
    }
</select>

<br />

<label for="estadoDestino">UF Destino:</label>
<select id="estadoDestino">
    <option value="SP">SP</option>
    <option value="RJ">RJ</option>
</select>

<label for="cidadeDestino">Destino:</label>
<select id="cidadeDestino">
    @foreach (FlyShopWeb.Models.Cidade cidade in ViewBag.ListaCidades)
    {
        <option value="@cidade.Codigo">@cidade.Nome</option>
    }
</select>

<br />
<input type="button" id="btFiltrarVoos" value="Filtrar" /> 

<hr />

<table id="tb-voos">
    <thead>
        <tr>
            <th>Nome</th>
            <th>Valor</th>
            <th>Assentos</th>
            <th>Disponíveis</th>
            <th>Aeronave</th>
            <th>Partida</th>
            <th>Previsão</th>
            <th>Origem</th>
            <th>Destino</th>
        </tr>
    </thead>
    <tbody>
    </tbody>
</table>

<script>

    $(function () {

        // Atualiza a tabela de voos quando a página for carregada
        atualizaVoos(@Html.Raw(Json.Encode(ViewBag.ListaVoos)));


        // Eventos, Funções ------------
        $("#estadoOrigem").change(function ()
        {

            var UF = $(this).val();
            
            var parametros = { UF: UF };

            $.post("@Url.Action("ListaCidadeDoEstado", "Home")", parametros, atualizaCidadesOrigem);;

        });


        function atualizaCidadesOrigem(cidades) {

            $("#cidadeOrigem").empty();

            for (var i = 0; i < cidades.length; i++) {
                $("#cidadeOrigem").append("<option value=" + cidades[i].Codigo + ">" + cidades[i].Nome + "</option>");
            }

        }


        $("#btFiltrarVoos").click(function () {

            var CodCidadeOrigem = $("#cidadeOrigem").val();
            var CodCidadeDestino = $("#cidadeDestino").val();

            var parametros = { CodCidadeOrigem: CodCidadeOrigem, CodCidadeDestino: CodCidadeDestino };

            $.post("@Url.Action("FiltrarVoos", "Home")", parametros, atualizaVoos);

        });

        function atualizaVoos(voos)
        {
            // Remove os registros
            $("#tb-voos tbody tr").remove();

            // Adiciona registros conforme a lista passada
            var corpoTabelaVoos = $("#tb-voos tbody");
            var dataAgora = new Date();
            var corVermelha = "#DC572E";
            var corBranca = "white";
            var corAzul = "#56C5FF";

            for (var i = 0; i < voos.length; i++) {

                // Atribui uma cor para o background do registro conforme a data de partida
                var dataPartidaVoo = converteDataJSONETParaJS(voos[i].DataPartida);
                var corRegistro;
                if (dataPartidaVoo <= dataAgora)
                {
                    corRegistro = corVermelha;  // voo já partiu
                }
                else
                {

                    var miliSIntervaloDatas = dataPartidaVoo.getTime() - dataAgora.getTime();
                    
                    // 14400000 = 4 horas em milisegundos
                    if (miliSIntervaloDatas <= 14400000)
                    {
                        corRegistro = corAzul;  // voo quase partindo
                    } else
                    {
                        corRegistro = corBranca; // voo disponivel
                    }

                }
                
                // Cria o registro
                corpoTabelaVoos.append(
                    "<tr style=\"background-color: "+ corRegistro + "\">" +
                        "<td>" + voos[i].Nome + "</td>" +
                        "<td>" + voos[i].Valor + "</td>" +
                        "<td>" + voos[i].TotalAssentos + "</td>" +
                        "<td>" + voos[i].AssentosDisponiveis + "</td>" +
                        "<td>" + voos[i].NomeAeronave + "</td>" +
                        "<td>" + formataDataString(converteDataJSONETParaJS(voos[i].DataPartida)) + "</td>" +
                        "<td>" + formataDataString(converteDataJSONETParaJS(voos[i].DataChegada)) + "</td>" +
                        "<td>" + voos[i].CidadePartida + "</td>" +
                        "<td>" + voos[i].CidadeChegada + "</td>" +
                    + "</tr>");
            }
           
        }

        function formataDataString(data)
        {
            var dataFormatada = data.getDate() + "/" + (data.getMonth() + 1) + "/" + data.getFullYear() +
                " - " + data.getHours() + ":" + data.getMinutes() + ":" + data.getSeconds();

            return dataFormatada;
        }

        function converteDataJSONETParaJS(dataJSON)
        {
            // Conversão de json.net date para javascript date
            // http://codeasp.net/blogs/raghav_khunger/microsoft-net/1105/convert-json-date-to-javascript-date

            var timeStampString = dataJSON.substring(6);
            var timeStampNum = parseInt(timeStampString);
            var data = new Date(timeStampNum);
            return data;
        }


    });

   



</script>